In recent years, computer users have become more and more reliant upon computers to store and maintain a wide variety of information. Of course, with this rise in computer use, the number of computing devices in operation has also increased significantly. For example, a typical telecommunications network may be comprised of hundreds (if not thousands) of different computing devices.
With so many computing devices in operation, efficiently maintaining and interacting with the large number of computers may invoke various challenges. To interact with a host computer, a user may access a program running on the computer. In general, the program will provide an interface that presents input prompts to which the user will be expected to respond. Through this manual interaction, the user may submit log-on credentials (i.e., name and password), perform desired operations and generate log files. Manual interaction with a program, however, may be time-consuming, inefficient and error prone, especially when similar series of interactions must be repeated on many different host computers.
A variety of techniques exist in the art for mitigating the problems associated with manual interaction with host computers. For example, a computer language named “Expect” may be used to automate interactions with host computers. Expect allows computer users to write computer code that imitates a user's interaction with an interactive program, and then, by executing this code, the interactions may be performed on a host computer without user intervention. By executing script written in the Expect language, a sequence of interactions with an interactive program may be performed. Expect has several commands that are used to control the communication process. For example, the spawn command directs Expect to run an interactive program or process. Additional data may be passed as arguments to the spawn command. These arguments may be passed on to the spawned process. Another command is the expect command. One or more patterns may be passed on in the expect command. This command monitors the output from the spawned process and watches for the pattern or patterns to appear. Once a pattern is identified in the output of the spawned process, additional arguments provide specific actions to execute. If no action is provided, the command pauses the execution of the program until the pattern appears. Those skilled in the art are readily aware of and familiar with the command structure and operation of the Expect language.
Despite the advantages of techniques such as those embodied by Expect, a variety of deficiencies still exist in the art surrounding the automation of interaction with host computers. For one, users of Expect today must understand the Expect language and must draft code for each different series of interactions. For complex interactions, the code may be quite involved. Further, code drafting requires a certain level of expertise and knowledge, and new code always requires testing and debugging. The causal user may not possess the necessary expertise, while even expert users may not have the time to draft and test new code for each interaction. Accordingly, there is a need for improved systems and methods for automating interaction with host computers.